import { login, getProfile, getUserDetailById } from '@/api/user.js'
import { setToken, getToken } from '@/utils/auth.js'
import { resetRouter } from '@/router'
const state = {
  token: getToken() || null,
  userInfo: {}
}

const mutations = {
  // 设置token
  setToken(state, newToken) {
    // 保存到xuex
    state.token = newToken
    // 保存到本地
    setToken(newToken)
  },
  // 删除token
  removeToken(state) {
    state.token = ''
  },
  // 保存用户信息
  setUserInfo(state, userInfo) {
    state.userInfo = userInfo
    // console.log('保存', userInfo)
  },
  // 删除用户信息
  removeUserInfo(state) {
    state.userInfo = {}
  }
}

const actions = {

  async userLogin(context, obj) {
    // 发送axios获取数据
    const res = await login(obj)
    console.log(res)
    context.commit('setToken', res.data)
    console.log('登陆成功')
  },
  async getUserInfo(context) {
    const res = await getProfile()
    console.log('获取用户信息', res.data)
    // 根据用户ID发送请求获取头像
    const info = await getUserDetailById(res.data.userId)
    // 将个人信息和头像一起保存
    context.commit('setUserInfo', { ...info.data, ...res.data })
    return res.data.roles.menus
  },
  // 退出的action操作
  logout(context) {
    // 1. 移除vuex个人信息
    context.commit('removeUserInfo')
    // 2. 移除token信息
    context.commit('removeToken')
    // 3. 重置路由
    resetRouter()
    console.log('退出')
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

